package com.lcc.kaptcha.demos.web;

import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;
import java.util.Date;

//验证验证码是否正确
@RequestMapping("/admin")
@RestController
public class KaptchaController {
    //企业标准：
    //常量定义：key全大写，单词之间用下划线分割 value通常小写，用下划线分割单词
    private static final String HOME_KAPTCHA_SESSION_KEY = "HOME_KAPTCHA_SESSION_KEY";
    private static final String HOME_KAPTCHA_SESSION_DATE = "HOME_KAPTCHA_SESSION_DATE";
    private static final Long Date_TimeOut = 60 * 1000L;//表示过了1分钟该验证码就过期了，这里单位是ms
    //从session中获取生成的验证码
    //对比前端传递的验证码，和Session中存储的是否一致
    //如果验证成功，返回true，否则返回false
    @RequestMapping("/check")
    public Boolean check(String kaptcha, HttpSession session){
        //校验输入的验证码是否合法
        if (!StringUtils.hasLength(kaptcha)){
            return false;
        }
        //进行验证码校验
        //获取到session中保存的验证码，该验证码是生成的验证码
        String saveKaptcha = (String) session.getAttribute(HOME_KAPTCHA_SESSION_KEY);
        //获取当前验证码的生成时间
        Date saveData = (Date)session.getAttribute(HOME_KAPTCHA_SESSION_DATE);
        if (kaptcha.equals(saveKaptcha)){
            if (saveData == null || System.currentTimeMillis() - saveData.getTime() < Date_TimeOut){
                return true;
            }
        }
        return false;
    }
}
